昨天小光從K大那邊學到了如何生成一個網頁程式專案,並且瞭解了網頁程式的類型,還有網頁程式初始的資料夾結構和初始的兩個檔案的內容,然而在進入開發之前今天要先了解一些網頁程式的基本知識。
「既然是學習網頁程式開發,還是要先從基礎開始。」
一大早老K就跟小光這麼說,這時小光正坐到位子上面連電腦都還沒打開,而大頭依舊在需求文件後面埋頭苦幹,不同的是需求文件少了一半。
「前輩那有些甚麼基礎知識需要知道的嗎。」
小光聽到老K的話之後用很認真的表情對老K這麼說。
「表情很好,通常的年輕人都只是學一學怎麼寫程式,都不會想學這個基本功...」
這時大頭抬起頭來偷笑,因為他看到老K對著小光開始一連串的說教,不過沒過多久他還是趕著回去處理自己的需求開發。
「好的,那我們來先學學兩個東西,請求的流水線跟相依注入的生命週期。」
在說完一長串的說教後終於要開始進入正題。
首先要先介紹dotnetcore請求的流水線走的方式,關於這方面請大家先看一下下圖。
MSDN的.Net Core Request Pipeline
這是一個請求的流水線,由請求發動後經過Routing
及Middleware
等等的處理後再進入到Endpoint
處理後會開始回到response
的部分。至於Endpoint
請看下圖。
上圖則是請求的流水線中Endpoint
的部分,其中MVC以例子為例可以再分成Filter
的處理以及Model Valiadtion
和Model Binding
的過程後會進到Controler的Action
的部分,其處理細節部分可以參考MVC的生命週期。
因此在程式開發的部分可以依據需求把部分的邏輯放到Filter內,然後驗證的處理後在到Action
內處理商業邏輯。
所以關於請求的流水線到此先告一段落,至於內部細節到時會在後續章節在更進一步說明該階段處理的過程。
剛剛介紹到Controler的Action的部分,所以這裡也先說明一下之後要介紹的相依性插入的重要觀念di lifecycle
,不過這邊介紹的是dotnetcore原生的相依注入的工具的名詞,之後介紹autofac
時會介紹之間的對應。
這邊相依注入的生命週期類別如下:
生命週期類別 | 說明 |
---|---|
Transient | 每一個元件的實體都是不同的,例如在不同的物件中注入的元件都是不同的 |
Scoped | 同一個請求中的元件會是相同的,但是不同的請求則會是不同的元件 |
Singleton | 整個網頁站台中的實例只會有一個,就算是不同的請求所注入的實例也是一樣的 |
會提到這個部分是要注意通常的類型都是使用Scoped
的這個類型,但如果要注入的元件例如會需要維持一條連線的狀況下會使用Singleton
的類型,至於在是用Transient
時要注意該元件上是否有狀態的存在,但是使用Transient上會造成資源的浪費,所以設計上會使用Scoped
並且注意不要有跟請求狀態有關的變數存在上面來取代Transient
。
今天老K跟小光介紹dotnet core的基本功,請求的流水線跟相依住注入的生命週期,希望能夠讓讀者們對於網頁程式開發的知識有一些認識。